home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / network / apple.old / TCPPB.h < prev    next >
Text File  |  1996-07-05  |  5KB  |  245 lines

  1. /* 
  2.     TCPPB.h    
  3.     C definitions of parameter block entries needed for TCP calls
  4.  
  5.     Copyright Apple Computer, Inc. 1988-89
  6.     All rights reserved
  7.     
  8. */
  9.  
  10.  
  11. /* Command codes */
  12.  
  13. #define TCPCreate            30
  14. #define    TCPPassiveOpen        31
  15. #define TCPActiveOpen        32
  16. #define TCPSend                34
  17. #define TCPNoCopyRcv        35
  18. #define TCPRcvBfrReturn        36
  19. #define TCPRcv                37
  20. #define TCPClose            38
  21. #define TCPAbort            39
  22. #define TCPStatus            40
  23. #define TCPExtendedStat        41
  24. #define TCPRelease            42
  25. #define TCPGlobalInfo        43
  26. #define TCPCtlMax            49
  27.  
  28. typedef enum TCPEventCode {
  29.     TCPClosing = 1,
  30.     TCPULPTimeout,
  31.     TCPTerminate,
  32.     TCPDataArrival,
  33.     TCPUrgent,
  34.     TCPICMPReceived,
  35.     lastEvent = 65535
  36. };
  37.  
  38. typedef enum TCPTerminationReason {
  39.     TCPRemoteAbort = 2,
  40.     TCPNetworkFailure,
  41.     TCPSecPrecMismatch,
  42.     TCPULPTimeoutTerminate,
  43.     TCPULPAbort,
  44.     TCPULPClose,
  45.     TCPServiceError,
  46.     lastReason = 65535
  47. }; 
  48.  
  49. typedef pascal void (*TCPNotifyProc) (
  50.         StreamPtr tcpStream,
  51.         unsigned short eventCode,
  52.         Ptr userDataPtr,
  53.         unsigned short terminReason,
  54.         struct ICMPReport *icmpMsg);
  55.  
  56. typedef void (*TCPIOCompletionProc) (struct TCPiopb *iopb);
  57.  
  58. typedef unsigned short tcp_port;
  59.  
  60. typedef unsigned char byte;
  61.  
  62. enum {                    /* ValidityFlags */
  63.     timeoutValue = 0x80,
  64.     timeoutAction = 0x40,
  65.     typeOfService = 0x20,
  66.     precedence = 0x10
  67. };
  68.  
  69. enum {                    /* TOSFlags */
  70.     lowDelay = 0x01,
  71.     throughPut = 0x02,
  72.     reliability = 0x04
  73. };
  74.  
  75. typedef struct TCPCreatePB {
  76.     Ptr         rcvBuff;
  77.     unsigned long rcvBuffLen;
  78.     TCPNotifyProc     notifyProc;
  79.     Ptr         userDataPtr;
  80. }TCPCreatePB;
  81.  
  82. typedef struct TCPOpenPB {
  83.     byte ulpTimeoutValue;
  84.     byte ulpTimeoutAction;
  85.     byte validityFlags;
  86.     byte commandTimeoutValue;
  87.     ip_addr remoteHost;
  88.     tcp_port remotePort;
  89.     ip_addr localHost;
  90.     tcp_port localPort;
  91.     byte tosFlags;
  92.     byte precedence;
  93.     Boolean dontFrag;
  94.     byte timeToLive;
  95.     byte security;
  96.     byte optionCnt;
  97.     byte options[40];
  98.     Ptr userDataPtr;
  99. }TCPOpenPB;
  100.     
  101. typedef struct TCPSendPB {
  102.     byte ulpTimeoutValue;
  103.     byte ulpTimeoutAction;
  104.     byte validityFlags;
  105.     Boolean pushFlag;
  106.     Boolean urgentFlag;
  107.     Ptr wdsPtr;
  108.     unsigned long sendFree;
  109.     unsigned short sendLength;
  110.     Ptr userDataPtr;
  111. }TCPSendPB;
  112.     
  113.  
  114. typedef struct TCPReceivePB {        /* for receive and return rcv buff calls */
  115.     byte commandTimeoutValue;
  116.     byte filler;
  117.     Boolean markFlag;
  118.     Boolean urgentFlag;
  119.     Ptr rcvBuff;
  120.     unsigned short rcvBuffLen;
  121.     Ptr rdsPtr;
  122.     unsigned short rdsLength;
  123.     unsigned short secondTimeStamp;
  124.     Ptr userDataPtr;
  125. }TCPReceivePB;
  126.     
  127. typedef struct TCPClosePB {
  128.     byte ulpTimeoutValue;
  129.     byte ulpTimeoutAction;
  130.     byte validityFlags;
  131.     Ptr userDataPtr;
  132. }TCPClosePB;
  133.     
  134. typedef struct HistoBucket {
  135.     unsigned short value;
  136.     unsigned long counter;
  137. };
  138.     
  139. #define NumOfHistoBuckets    7
  140.  
  141. typedef struct TCPConnectionStats {
  142.     unsigned long dataPktsRcvd;
  143.     unsigned long dataPktsSent;
  144.     unsigned long dataPktsResent;
  145.     unsigned long bytesRcvd;
  146.     unsigned long bytesRcvdDup;
  147.     unsigned long bytesRcvdPastWindow;
  148.     unsigned long  bytesSent;
  149.     unsigned long bytesResent;
  150.     unsigned short numHistoBuckets;
  151.     struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
  152.     unsigned short lastRTT;
  153.     unsigned short tmrSRTT;
  154.     unsigned short rttVariance;
  155.     unsigned short tmrRTO;
  156.     byte sendTries;
  157.     byte sourchQuenchRcvd;
  158. }TCPConnectionStats;
  159.     
  160. typedef struct TCPStatusPB {
  161.     byte ulpTimeoutValue;
  162.     byte ulpTimeoutAction;
  163.     long unused;
  164.     ip_addr remoteHost;
  165.     tcp_port remotePort;
  166.     ip_addr localHost;
  167.     tcp_port localPort;
  168.     byte tosFlags;
  169.     byte precedence;
  170.     byte connectionState;
  171.     unsigned short sendWindow;
  172.     unsigned short rcvWindow;
  173.     unsigned short amtUnackedData;
  174.     unsigned short amtUnreadData;
  175.     Ptr securityLevelPtr;
  176.         /* HEMS-HEMP stats */
  177.     unsigned long sendUnacked;
  178.     unsigned long sendNext;
  179.     unsigned long congestionWindow;
  180.     unsigned long rcvNext;
  181.     unsigned long srtt;
  182.     unsigned long lastRTT;
  183.     unsigned long sendMaxSegSize;
  184.     struct TCPConnectionStats *connStatPtr;
  185.     Ptr userDataPtr;
  186. }TCPStatusPB;
  187.     
  188. typedef struct TCPAbortPB {
  189.     Ptr userDataPtr;
  190. }TCPAbortPB;
  191.     
  192. typedef struct TCPParam {
  193.     unsigned long tcpRtoA;
  194.     unsigned long tcpRtoMin;
  195.     unsigned long tcpRtoMax;
  196.     unsigned long tcpMaxSegSize;
  197.     unsigned long tcpMaxConn;
  198.     unsigned long tcpMaxWindow;
  199. }TCPParam;
  200.  
  201. typedef struct TCPStats {
  202.     unsigned long tcpConnAttempts;
  203.     unsigned long tcpConnOpened;
  204.     unsigned long tcpConnAccepted;
  205.     unsigned long tcpConnClosed;
  206.     unsigned long tcpConnAborted;
  207.     unsigned long tcpOctetsIn;
  208.     unsigned long tcpOctetsOut;
  209.     unsigned long tcpOctetsInDup;
  210.     unsigned long tcpOctetsRetrans;
  211.     unsigned long tcpInputPkts;
  212.     unsigned long tcpOutputPkts;
  213.     unsigned long tcpDupPkts;
  214.     unsigned long tcpRetransPkts;
  215. }TCPStats;
  216.     
  217. typedef struct TCPGlobalInfoPB {
  218.     struct TCPParam *tcpParamPtr;
  219.     struct TCPStats *tcpStatsPtr;
  220.     unsigned long *tcpCDBTable;
  221.     Ptr userDataPtr;
  222. }TCPGlobalInfoPB;
  223.     
  224. typedef struct TCPiopb {
  225.     char                 fill12[12];
  226.     TCPIOCompletionProc    ioCompletion;
  227.     short                 ioResult;
  228.     char                 *ioNamePtr;        
  229.     short                 ioVRefNum;        
  230.     short                ioCRefNum;            
  231.     short                 csCode;
  232.     StreamPtr             tcpStream;                
  233.     union {
  234.         struct TCPCreatePB create;
  235.         struct TCPOpenPB open;
  236.         struct TCPSendPB send;
  237.         struct TCPReceivePB receive;
  238.         struct TCPClosePB close;
  239.         struct TCPAbortPB abort;
  240.         struct TCPStatusPB status;
  241.         struct TCPGlobalInfoPB globalInfo;
  242.         } csParam;
  243. }TCPiopb;
  244.     
  245.